package main

import (
	"Test/1goAdvanced/chatroom/utils"
	"bufio"
	"fmt"
	"net"
	"os"
)

func main() {
	fmt.Println("请输入你的网名")
	username := utils.ReadLine()
	conn, err := net.Dial("tcp", "127.0.0.1:8888")
	if err != nil {
		// handle error
		fmt.Println("连接服务器失败")
	}
	//fmt.Fprintf(conn, "GET / HTTP/1.0\r\n\r\n")
	//result, err := bufio.NewReader(conn).ReadString('\n')
	//程序记得关闭
	defer conn.Close()
	//发送用户名到服务器
	_, err = conn.Write([]byte(username + "\n"))
	if err != nil {
		fmt.Println("用户名发送失败", err)
		os.Exit(0)
	}
	go receiveMessages(conn)
	fmt.Println("连接到服务器！输入exit退出！")
	for {
		fmt.Print(">")
		message := utils.ReadLine()
		if message == "exit" {
			break
		}
		//发送消息
		_, err = conn.Write([]byte(message + "\n"))
		if err != nil {
			fmt.Println("发送消息失败：", err)
			break
		}
	}
	//发送离开消息
	conn.Write([]byte("exit\n"))
	fmt.Println("你已退出聊天室。")
}

func receiveMessages(conn net.Conn) {
	reader := bufio.NewReader(conn)
	for true {
		message, err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("与服务器断开连接")
			os.Exit(0)
		}
		fmt.Println(utils.TrimNewLine(message))
	}

}
